package com.dc.designPattern._11_proxy.extend.extend2;

/**
 * Description: 强制代理_客户端
 *
 * 强制代理：
 *  就是从目标对象查找到代理对象，不能直接访问目标对象，或者由自己创建代理对象去访问目标对象
 *  高层模块，只要调用 getProxy就可以访问真实角色的所有方法，它根本就不需要产生一定代理出来，代理的管理已经由真实角色自己完成。
 *
 * @author: gdc
 * @date: 2021/6/24
 * @version 1.0
 */
public class Client {

    public static void main(String[] args){
        // 当前代理对象，不是目标对象指定的对象（此代理对象是由我们自己new出来的，因此目标对象不认）
        //IGamePlayer player = new GamePlayer("张三");
        //IGamePlayer proxy = new GamePlayerProxy(player);

        // 必须由目标对象，返回自己内定好的代理对象，才能正常执行
        IGamePlayer player = new GamePlayer("张三");
        IGamePlayer proxy = player.getProxy();

        System.out.println("开始时间是：2021-06-24 12:00:00");

        proxy.login("zhangsan", "123456");
        proxy.killBoss();
        proxy.upgrade();

        System.out.println("结束时间是：2021-06-24 18:00:00");
    }
}